iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0
AI/ ML & Data

調整AI超參數好煩躁?來試試看最佳化演算法吧!系列 第 3

[Day 3]當今的最佳化手段有甚麼?

  • 分享至 

  • xImage
  •  

前言

最佳化問題會根據不同的問題而有不同的處理手段,即使是相同問題也有很多不同的處理手段。今天我想來簡述一下目前模型最佳化等應用我們能夠使用的手段以及它們之間的比較。

最佳化模型的流程

模型最佳化的流程大概就幾個步驟。

  1. 首先是擬定好5W1H並進行規劃
    1. 為何使用最佳化(Why)
    2. 問題是什麼(What)
    3. 要最佳化的模型、要考慮的因素(Who)
    4. 考慮的因素其值的範圍(Where)
    5. 小規模測試確定沒問題再套用最佳化(When)
    6. 使用的最佳化為何、如何使用(How)
  2. 將問題進行公式化(把What、Who、Where處理好)
  3. 使用演算法求出最佳解(把How處理好)

這個流程很簡單,但裡面有一些部分需要再更詳細的說明,例如公式化、演算法等。

公式化

公式化其實就是作天提到的What,也就是問題是什麼?最佳化方向是要找最大值還是最小值?公式化就是要將問題化為數學公式。這個公式會被稱為fitness function。例如使用均方誤差MSE當作fitness function那公式化就是!!!。經過fitness function計算出來的結果被稱為適應值fitness value也就是將當下的解帶入並求出來的結果,最佳化就是要找出能讓這個結果最小化或者最大化的解組合。(畫圖)

也就是說公式化只是要將最佳化的問題化為數學公式讓程式可以計算結果的一個步驟,也是最佳化問題的基石。

公式化就是列出問題(模型的評估指標例如MSE、準確率等)跟問題的目的(要找最大值或者最小值)以及條件(最佳化的因素有什麼條件嗎),並將之化為數學公式。

演算法

演算法其實分為兩種大方向,主要分為窮舉式演算法啟發式演算法,未來我們會著重於啟發式演算法,但我們還是得了解這兩種演算法的差異有什麼。

  • 窮舉式演算法:

    通常窮舉講白了就是把所有可能的解都測試一次並計算fitness value,這個做法可以求出最佳值,但是相對來說會花費極大量的時間。而且面對模型最佳化有些因素的定義範圍是連續的(例如學習率),那在窮舉時就會花費非常大量的時間來找出最佳解。

    通常不外乎就是使用for迴圈等將所有可能的值全部跑一次,隨著要考慮的因素變多、考慮的範圍變廣,花費的時間一定是難以想像。所以在模型最佳化中通常不太會使用窮舉是演算法。

  • 啟發式演算法:

    啟發式演算法基本上是能根據過往經驗而決定下一步最佳化方向以及下一步的解,根據過往經驗可以使演算法更快速的找到最佳解,進而大幅節省運算所需的時間與資源。

    啟發式演算法會使用各種五花八門的演算法來求最佳值,雖然是求最佳值但因為迭代次數變少而精確度就會降低。嚴格說起來啟發式演算法只能求出近似最佳解的結果,但好處就是會費的時間會縮短很多。

窮舉是演算法與啟發式演算法是兩個相反的存在。前者花費大量時間但具有高精確度;後者花費較少時間但精確度也會降低。

結語

今天介紹了模型最佳化問題的基本流程以及求解手段。雖然面對不同問題時的解決方法多少都會有差異,不過面對深度學習的模型最佳化基本上流程是相差不多的!接下來我會來更深入的介紹更多演算法以及他們的原理、性質、應用層面、優缺點等。希望各位可以在接下來幾天對最佳化問題中的啟發式演算法有更多的理解!


上一篇
[Day 2]最佳化演算法的5W1H
下一篇
[Day 4]最佳化演算法入門,更深入的了解啟發式演算法!
系列文
調整AI超參數好煩躁?來試試看最佳化演算法吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言